This disclosure relates to identifying and counting errors in a communication signal. More particularly, this disclosure relates to processing error events, including error event masks and error event likelihood metrics, in connection with low-density parity check (LDPC) decoding.
Consider a system that can be represented by a finite state machine. For example, a finite state machine can be used to model an inter-symbol-interference (ISI) channel or a convolutional code encoder. A trellis diagram can be used to represent the sequence of all possible paths (i.e., sequences of states) that the system can visit over time. If the system can transition from state A at time t to state B at time t+1, then these states are connected by a branch. Each branch may be labeled by X/Y pair, where X denotes the input that causes the system to transition from state A to B and Y represents an output corresponding to this transition. For example, an ISI channel with a two-bit channel response can be represented by a four-state trellis diagram. The states of this trellis can be labeled as 00, 01, 10, 11 and may be associated with the latest two bits transmitted through the ISI channel. For example, if the system is at state 01 at time t, and 0 is transmitted, then the next state at time t+1 would be 10. Similarly, the system would transition to state 11 if 1 were transmitted. Channel output Y that results from these transitions is a real number m, that may be different for each branch.
In the ISI channel situation, the signals at the output of the ISI channel are detected by a trellis-based detector, such as a Viterbi (maximum-likelihood) detector. In the convolutional encoder situation, where an encoder receives input bits and generates output bits that are weighted sums of the input bits, the bits at the output of the encoder (also called “parity bits”) are communicated to a receiver and are decoded using a Viterbi decoder. In either situation, the detector/decoder is based on the trellis representing the ISI channel or the convolutional code encoder. However, a Viterbi detector/decoder does not know the particular path that occurred in the trellis of the ISI channel/convolutional code encoder. Rather, the Viterbi detector/decoder must use the signals/bits it receives and find the trellis path that most-likely occurred based on the received signals/bits.
This detection/decoding is often complicated by the presence of noise or errors in the received signals/bits. In some situations, the trellis path that most likely occurred based on the received signals/bits may not be the same as the trellis path that actually occurred in the ISI channel/convolutional code encoder. In such situations, another layer of error correction may be applied before the ISI channel/convolutional encoding, so that any errors that may remain after Viterbi detection/decoding can be addressed. In this case, it may be helpful to determine the potential location and nature of these errors and to provide this information to an additional layer of error correction applied after the detection/decoding. This additional layer of error correction may then process that error information in order to determine and apply the most suitable error correction to the output signals/bits generated by the Viterbi detector/decoder and ensure a more accurate decoded data output.